package org.example.huweb.web.sys_Carousel.controller;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.example.Result.Result;
import org.example.Result.ResultUtils;
import org.example.dto.Carousel.addCarouselDTO;
import org.example.entity.SysCarouselRole;
import org.example.huweb.web.sys_Carousel.copyMapper.copyCarousel;
import org.example.huweb.web.sys_Carousel.service.SysCarouselService;
import org.example.utils.consoleOutput;
import org.example.vo.CarouseListVo;
import org.springframework.web.bind.annotation.*;

import java.util.List;

// 轮播图控制器
// 该控制器负责处理轮播图的增删改查操作
@RestController
@RequestMapping("/api/carousel")
@RequiredArgsConstructor
@Slf4j
public class carouselController {

    private final SysCarouselService sysCarouselDao;
    private final copyCarousel copyUtils;

    // 获取轮播图列表
    @GetMapping("/list")
    public Result<Object> getCarouselList() {
        // 可以调用 sysCarouselDao 的相关方法获取轮播图列表
        // 然后返回结果
        List<SysCarouselRole> carouselList = sysCarouselDao.getCarouselList();
        if (carouselList == null) {
            return ResultUtils.error("获取轮播图列表失败");
        }
        List<CarouseListVo> carouseListVos = copyUtils.ListSysCarouselRoleToCarouseListVo(carouselList);
        carouselList.forEach(e -> {
            System.out.println(e.toString());
        });
        return ResultUtils.success(carouseListVos);
    }

    // 获取管理轮播图详情列表
    @GetMapping("/manage/list")
    public Result<Object> getCarouselManageList() {
        //TODO 没有做权限控制，需要做权限控制

        List<SysCarouselRole> carouselList = sysCarouselDao.getCarouselManageList();
        return ResultUtils.success(carouselList);
    }

    // 新增轮播图
    @PostMapping("/add")
    public Result<Object> addCarousel(@RequestBody addCarouselDTO dto) {
        //TODO 没有做权限控制，需要做权限控制

        SysCarouselRole sysCarouselRole = copyUtils.addCarouselDTOToSysCarouselRole(dto);
        sysCarouselDao.addCarousel(sysCarouselRole);
        return ResultUtils.success("ok");
    }

    // 修改轮播图
    @PutMapping("/update/{id}")
    public Result<Object> updateCarousel(@PathVariable int id, @RequestBody addCarouselDTO dto) {
        //TODO 没有做权限控制，需要做权限控制

        // 可以调用 sysCarouselDao 的相关方法修改轮播图信息
        // 然后返回结果
        consoleOutput.print("updateCarousel", "dto: " + dto);
        SysCarouselRole sysCarouselRole = copyUtils.addCarouselDTOToSysCarouselRole(dto);
        sysCarouselRole.setCId(id);
        sysCarouselDao.updateCarousel(sysCarouselRole);

        return ResultUtils.success("update");
    }

    // 交换两个轮播图的位置式修改轮播图排序
    @PutMapping("/swap")
    /**
     * @param id  要交换的轮播图id
     * @param ids 被交换的轮播图id
     */ public Result<Object> sortCarousel(int want_id, int by_id) {
        //TODO 没有做权限控制，需要做权限控制
        consoleOutput.print("sortCarousel", "want_id: " + want_id + " by_id: " + by_id);
        sysCarouselDao.sortCarousel(want_id, by_id);
        return ResultUtils.success("ok");
    }

    // 删除轮播图    `a
    @DeleteMapping("/delete/{id}")
    public Result<Object> deleteCarousel(@PathVariable int id) {
        //TODO 没有做权限控制，需要做权限控制
        sysCarouselDao.deleteCarousel(id);
        consoleOutput.print("deleteCarousel", "id: " + id);
        return ResultUtils.success("delete :" + id);
    }

}
